package 运算练习;

import java.math.BigDecimal;
import java.util.Scanner;

public class BigDecimalText {
    public static void main(String[] args) {
f2();
f1();
    }
    public static void f2(){
        //提示并接收用户输入的两个小数
        System.out.println("请输入您要计算的两个小数");
        double a=new Scanner(System.in).nextDouble();
        double a2=new Scanner(System.in).nextDouble();
        //创建工具类把两个类型a和a2交给工具类对象BigDecimal来保存
        /**
         * 1.最好不要用double作为构造函数,不然还会有不精确的现象,有坑
         * 2.最好使用重载的,参数类型是String的构造函数
         * double转String直接品格空串就可以了
         */
        BigDecimal as=new BigDecimal(a+"");
        BigDecimal ae=new BigDecimal(a2+"");
        //通过BigDecimal的对象来调用其方法,实现精准运算
        //3.1定义BigDecimal类型的引用类型变量来保存结果
        BigDecimal ad;
        //3.2做加法运算Add(BigDecimal as)
        ad=as.add(ae);//加法运算Api
        System.out.println(ad);
        //subtract()
        ad=as.subtract(ae);//做减法运算
        System.out.println(ad);
        //multiply()做乘法运算
        ad=as.multiply(ae);
        System.out.println(ad);
        //divide()
        /**
         * 除法运算在除不尽时会报异常Exception in thread "main" java.lang.ArithmeticException
         * 解决方法一(除不尽有问题)
         * ad=as.divide(ae);
         * 方法二divide(m,n,o)
         * m是要除以那个对象,n是指要保留几位,o指舍入方式 (如四舍五入)
         */
        ad=as.divide(ae,3,BigDecimal.ROUND_HALF_UP);
        System.out.println("是的覅"+ad);
    }
    public static void f1(){
        //1.提示并接收用户输入的两个小数
        System.out.println("请输入您要计算的两个小数:");
        double a = new Scanner(System.in).nextDouble();
        double b = new Scanner(System.in).nextDouble();

        //2.做运算
        System.out.println(a + b);//不精确
        System.out.println(a - b);//不精确
        System.out.println(a * b);//不精确
        System.out.println(a / b);//不精确
    }
}
